Responser is a Perl program that generates webpages which list responses from interactive fiction games.
The raw input data is in a file called responses.json.txt
, in JSON format, UTF-8 encoding.
Responser also reads an image directory to determine which cover art images it can use in the output webpages.
Responser's output is a set of .html files such as:
responses.json.txt
{
"commands":{
"xyzzy":{
"sdesc":"short description of XYZZY on the index page",
"intro":"text at the top of XYZZY's page",
"outro":"text at the bottom of XYZZY's page"
},...
},
"systems":{
"ADRIFT":{...},
...
"TADS 3":{...}
},
"works":{
"ID":{"title":"Title Of The Work","year":"publication year",
"xyzzy":"XYZZY response.",
"xyzzy_nb":"Optional note about XYZZY response.",
...
"variants":[
{"title":"Variant Title",
"xyzzy":"The response to XYZZY in the variant version of the work.",...
},...
]
},...
}
}
The commands
section lists the commands that we want to make response pages for.
sdesc
field should contain a short description of the command for the index page.intro
field should contain an introductory paragraph or two for the response page itself.outro
field won't be used much except for a see-also paragraph for additional interesting links relevant to the command.The systems
section lists authoring systems that have default responses for any of the commands we're interested in.
Their fields are similar to those in the works
section, except there's no need for title
, sfx
, year
, or variants
fields in the systems section.
The works
section lists works of interactive fiction with their responses. The IDs of each work are the ones used
everywhere in the Key & Compass site to uniquely identify works of IF; see kacIDs (document link to come).
title
field is for the title of the work. There should be no HTML markup in the title field.
However, the title field sometimes contains an extra "|" character to indicate where sorting should take place.
Untitled works should have a title field value of "untitled|"
.sfx
(suffix) field is an optional field for a disambiguation phrase to go after the title.
Don't put brackets around the value; let the Responser program do that.year
field is an optional field to indicate the work's publication year.
This is usually unnecessary because the ID already contains the year info.nb
field is an optional field to put a general comment in the file. This lets me leave notes for myself that aren't used by Responser at all, except maybe in a diagnosis report.
"NB" is short for nota bene, which is Latin for "note well".error
field is another optional field for an comment, but more specifically about bugs, errors, or crashes that occured when trying to run the IF work.variants
field won't be used much, but mostly lets us group variants of a single work of IF together. Each variant uses the same fields as a normal work (except variants
itself, of course).plover
, plugh
, etc. fields contain the responses for the named command.
<p>
and </p>
tags.<ins>
... </ins>
tags to markup embedded comments in responses. This is currently rendered as
green italic sans-serif text.
Using the <ins>
tag helps Reponser ignore my inserted comments when sorting by response text.class="spoiler"
when and where applicable. Spoiler text is currently rendered as lightgray text on a lightgray background."!! >xyzzy"
means it's the same response as XYZZY's. Any command might be substituted for XYZZY, as applicable."!! ~xyzzy"
means it's almost the same response as XYZZY's, except this command's magic word is used in the response."!! @Inform"
means it uses the default response for Inform games. Any system might be substituted for Inform, as applicable. (But you won't ever see "!! @ALAN"
, since as far as I know, there's no main ALAN library to get default responses from. I think ALAN authors each make up their own base libraries.)"!! n/a"
means the response is inapplicable; can't input the command. I probably won't bother recording such works in the first place here."!! :Other Deferral"
is reserved for other weirdness, such as if the command is mangled by mistype.h from "plugh" into "hug"."-"
is short for "!! >notunderstood"
; the work doesn't understand that command.plover_nb
, plugh_nb
, etc. fields are for footnotes that we want to put underneath the listing of a response.To avoid having responses repeated too often, if a response is the same for two different commands, it gets listed on one page and not the other. The lesser command's page has to be satisfied with a "LesserCommand acts like GreaterCommand" entry; for example "PLUGH acts like XYZZY".
Yes, I know they're weird. They are pseudo-commands for the purposes of the Responser project. I'm not saying anyone actually types these commands in, but how else should I have documented their responses?
This is a second program that analyzes the responses.json.txt
data; the "QC" stands for "Quality Control".
I want to know if the data is not well-formatted or incomplete, where I'm having problems, and to make suggestions where I can improve the data.
This program also taps into my main datafile for IF works, currently called gamejson.txt
, from my IFIndexer project.
What Responser_QC currently reports on:
"sing"
as "snig"
?<p>
with a </p>
, etc.?gamejson.txt
file with a score from 0 to 30, roughly deciding
how important it is for me to add that work's responses to the Responser datafile, then listing the top 40 of those that aren't
already there.responses.json.txt
.
I'm currently skipping ALAN 3 and ADRIFT works because I don't know yet if I can run those works on my current machine.responses.json.txt
.
Some IF works crash when I try to play them, so I can't report their responses.
I usually don't know if it's the interpreter's fault or Windows 10's fault or if I have a bad copy of the work's story file or what."!! n/a"
."!! :Other Deferral"
.<li class="spoiler">
so that the bullet points aren't greyed out.<div class="boxquote"><pre>
markup.<ins>[etc.]</ins>
.IF Responses Last updated: 28 Jan 2018 davidwelbourn(a)hotmail*com